package com.rayo.accesscontrollercopy.model.db;

import android.content.Context;

import com.litesuits.orm.LiteOrm;
import com.litesuits.orm.db.assit.QueryBuilder;
import com.litesuits.orm.db.assit.WhereBuilder;
import com.rayo.accesscontrollercopy.config.Version;

import java.util.List;

/**
 * Created by yanghaojie on 16/5/10.
 */
public class DbHelp {
    public static String DB_NAME;

    public static LiteOrm liteOrm;

    public static void CreateDb(Context _activity) {
        DB_NAME = "ACCESS_CONTROLLER" + ".db";
        liteOrm = LiteOrm.newSingleInstance(_activity, DB_NAME);
        liteOrm.setDebugged(Version.isSqlDubeg);
    }

    /**
     * 插入一条记录
     *
     * @param t
     */
    public static <T> void insert(T t) {
        liteOrm.save(t);
    }

    /**
     * 插入所有记录
     *
     * @param list
     */
    public static <T> void insertAll(List<T> list) {
        liteOrm.save(list);
    }

    /**
     * 查询所有
     *
     * @param cla
     * @return
     */
    public static <T> List<T> getQueryAll(Class<T> cla) {
        return liteOrm.query(cla);
    }

    /**
     * 查询  某字段 等于 Value的值
     *
     * @param cla
     * @param field
     * @param value
     * @return
     */
    public static <T> List<T> getQueryByWhere(Class<T> cla, String field, String[] value) {
        return liteOrm.query(new QueryBuilder(cla).where(field + "=?", value));
    }

    /**
     * 查询  某字段 等于 Value的值  可以指定从1-20，就是分页
     *
     * @param cla
     * @param field
     * @param value
     * @param start
     * @param length
     * @return
     */
    public static <T> List<T> getQueryByWhereLength(Class<T> cla, String field, String[] value, int start, int length) {
        return liteOrm.query(new QueryBuilder(cla).where(field + "=?", value).limit(start, length));
    }

    /**
     * 删除所有 某字段等于 Vlaue的值
     *
     * @param cla
     * @param field
     * @param value
     */
    public static <T> void deleteWhere(Class<T> cla, String field, String[] value) {
        liteOrm.delete(cla, WhereBuilder.create(cla).where(field + "=?", value));
    }

    /**
     * 删除所有
     *
     * @param cla
     */
    public static <T> void deleteAll(Class<T> cla) {
        liteOrm.deleteAll(cla);
    }

    /**
     * 删除
     *
     * @param cla
     */
    public static <T> void delete(T cla) {
        liteOrm.delete(cla);
    }

    /**
     * 删除
     *
     * @param cla
     */
    public static <T> void deleteList(List<T> cla) {
        liteOrm.delete(cla);
    }

    /**
     * 仅在以存在时更新
     *
     * @param t
     */
    public static <T> void update(T t) {
        liteOrm.update(t);
    }

    public static <T> void updateALL(List<T> list) {
        liteOrm.update(list);
    }

}
